const config = require('../../../utils/config')
const api = require('../../../utils/api')

Page({
  data: {
    categoryId: null,
    categoryName: '商品列表',
    products: [],
    loading: true,
    page: 1,
    pageSize: 10,
    hasMore: true,
    sortBy: 'default', // 排序方式：default, price-asc, price-desc, sales-desc
    showFilterPanel: false, // 是否显示筛选面板
  },

  onLoad(options) {
    // 获取分类ID和名称
    const categoryId = options.categoryId
    const categoryName = options.categoryName || '商品列表'
    
    this.setData({
      categoryId,
      categoryName
    })
    
    this.loadProductList()
  },
  
  // 加载商品列表
  loadProductList(isLoadMore = false) {
    if (!isLoadMore) {
      this.setData({ loading: true })
    }
    
    const { categoryId, page, pageSize, sortBy } = this.data
    
    // 构建请求参数
    const params = {
      categoryId,
      page,
      pageSize
    }
    
    // 设置排序参数
    if (sortBy === 'price-asc') {
      params.sortBy = 'price'
      params.sortOrder = 'asc'
    } else if (sortBy === 'price-desc') {
      params.sortBy = 'price'
      params.sortOrder = 'desc'
    } else if (sortBy === 'sales-desc') {
      params.sortBy = 'sales'
      params.sortOrder = 'desc'
    }
    
    // 请求分类下的商品列表
    api.get(config.API.CATEGORY.PRODUCTS, params)
      .then(res => {
        console.log('获取商品列表成功:', res)
        
        // 确保返回的是数组
        const products = Array.isArray(res.data.list) ? res.data.list : []
        const total = res.data.total || 0
        
        // 判断是否还有更多数据
        const hasMore = this.data.page * this.data.pageSize < total
        
        if (isLoadMore) {
          // 加载更多，拼接数据
          this.setData({
            products: [...this.data.products, ...products],
            loading: false,
            hasMore
          })
        } else {
          // 首次加载或刷新，替换数据
          this.setData({
            products,
            loading: false,
            hasMore
          })
        }
      })
      .catch(err => {
        console.error('获取商品列表失败:', err)
        this.setData({
          loading: false
        })
        wx.showToast({
          title: '加载商品失败',
          icon: 'none'
        })
      })
  },
  
  // 下拉刷新
  onPullDownRefresh() {
    this.setData({
      page: 1,
      hasMore: true
    })
    
    this.loadProductList(false)
    
    wx.stopPullDownRefresh()
  },
  
  // 上拉加载更多
  onReachBottom() {
    if (!this.data.hasMore) {
      return
    }
    
    this.setData({
      page: this.data.page + 1
    })
    
    this.loadProductList(true)
  },
  
  // 切换排序方式
  changeSortBy(e) {
    const sortBy = e.currentTarget.dataset.sort
    
    if (sortBy === this.data.sortBy) {
      return
    }
    
    this.setData({
      sortBy,
      page: 1,
      hasMore: true
    })
    
    this.loadProductList()
  },
  
  // 切换筛选面板显示
  toggleFilterPanel() {
    this.setData({
      showFilterPanel: !this.data.showFilterPanel
    })
  },
  
  // 跳转到商品详情页
  navigateToDetail(e) {
    const productId = e.currentTarget.dataset.id
    wx.navigateTo({
      url: `/pages/product/detail/detail?id=${productId}`
    })
  },
  
  // 添加到购物车
  addToCart(e) {
    const product = e.currentTarget.dataset.product
    
    // 显示加载中
    wx.showLoading({
      title: '添加中...',
      mask: true
    })
    
    // 调用添加购物车API
    api.post(config.API.CART.ADD, {
      productId: product.id,
      quantity: 1
    })
    .then(res => {
      wx.hideLoading()
      wx.showToast({
        title: '已加入购物车',
        icon: 'success'
      })
    })
    .catch(err => {
      wx.hideLoading()
      wx.showToast({
        title: '添加失败，请重试',
        icon: 'none'
      })
      console.error('添加购物车失败:', err)
    })
  }
}) 